課程資訊
課程名稱
計算機程式設計
Computer Programming 
開課學期
106-2 
授課對象
 
授課教師
鄭士康 
課號
EE3029 
課程識別碼
901 33900 
班次
 
學分
4.0 
全/半年
半年 
必/選修
 
上課時間
星期五7,8,9,10(14:20~18:20) 
上課地點
博雅301 
備註
A6:量化分析與數學素養
總人數上限:100人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/1062EE3029_ 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

注意: 本課程須投入甚多時間撰寫程式與報告, 課程負擔由輕而重, 至期末時達最高峰, 課業繁重或無決心毅力之同學請慎重考慮.

注意: 本課程鼓勵同學自組1至3人之團隊, 合作完成期末專題程式, 且各團隊期末專題程式成績即各成員共同之期末專題程式成績,占學期成績之30%. 因此務必慎選夥伴,若有重大合作困難,請及早反應處理.

注意: 除非考卷或作業批改登記發生錯誤,絕不更改成績.

注意: 本校另外開有其他類似課程, 而本課程為"深碗"式設計, 重視程式語言邏輯訓練, 以及軟體設計與偵錯測試等方法介紹. 每週最後一節由助教協助同學實作, 期中需繳交三次自訂主題之作業, 期末並要求分組完成同樣自訂主題之專題程式, 要求較多. 同學可以參考比較..

注意: 本課程使用程式整合開發環境Visual Studio 2017, 請由校計中官網授權軟體下載處下載安裝. 此一開發環境較適合於Windows環境下執行. Apple Mac的系統請安裝Visual Studio for Mac. 另外據助教提供經驗: 用平板來進行程式設計時, 須將鍵盤呈現在螢幕上. 想看螢幕畫面就得犧牲打字的便利性, 想打得順就看不到螢幕, 這是平板電腦先天的限制. 如忽略這些障礙, 可在另一電腦安裝Visual Studio, 用TeamViewer遠端操控.

課程緣起:
進入資訊科技時代,電腦程式設計已可說是未來「數位公民」應有的基本學養. 賈伯斯早在1995年就主張: "所有美國人都應該學程式,學習一門程式語言,學程式教你如何思考,就像學法律一樣。並不是要大家都去學法律,但法律教你一種思考方式,而程式帶給你另外一種思考方式。我認為電腦科學應該作為基本教育,每個人都應該花一年時間學習它"(http://www.inside.com.tw/2013/05/08/steve-jobs-the-lost-interview)。國外知名大學多已對非理工科系開設相關課程, 因此台大開始推動普及電腦程式設計課程, 作為「深碗」通識課程之一部份. 除提高修課人數上限, 同時增添助教人力, 要求確實實作, 增強同學們在資訊時代的競爭力。

課程簡介:
以主要程式語言之一的C#為例, 由基本觀念循序漸近, 介紹計算機程式的語法與程式設計撰寫要領. Part I 前半適合初學者. Part II引入物件觀念後, 則程度較好同學亦能有所收獲.修完本課程後, 即有能力學習其他各種計算機程式語言之程式設計, 或學習使用特定軟體工具開發包括網路應用及手機APP等實用程式.

課程主要內容分章如下:

1.教學計畫及C#簡介
Part I. 函式
2.整合發展環境初步與簡易C#程式
3.實值變數與運算式
4.流程控制
5.陣列
6.函式
7.程式規劃與函式導向程式設計 (函式導向指分解工作為階層結構之多個函式, 並非計算機科學所稱之Functional Programming)

Part II. 物件
8.物件與類別
9.物件導向程式設計
10.繼承與多型
11.檔案讀寫與例外處理
12.基礎視窗程式設計
13.Collections 與應用
Unity遊戲程式設計

上課方式:

請同學自備筆記型電腦上課. 課堂上Power Point教學, 程式示範, 及習作交替進行. 課堂習作時由助教群解答同學問題.課程剛開始幾週內, 課堂實作時同學可以另開資料夾, 逐行鍵入及執行剛教的例題程式,並嘗試各種變化. 隨著例題程式逐漸複雜, 同學可以直接打開教材所附檔案夾,找到對應的例題程式專案,閱讀程式碼,以偵錯器逐步執行較不明瞭部分,或者改變若干程式敘述, 觀察執行結果如何改變. 學習較快同學可以在課堂實作時間, 自習尚未教到的部分, 或嘗試撰寫自己構想的題目. 原則上任課教師及助教群只回答已教過的內容問題, 牽涉到尚未教課程的問題, 則只回答將在何處教到,由同學自學並嘗試解決. 任課教師亦可能出一道題, 請同學在課堂實作時間內完成. 每一段課堂實作結束時, 任課教師可能隨機指定某位同學向全班解說其構想及所完成之程式, 並予講評.

同時請注意期中考後, 內容難度開始增加, 講解時間增多, 課堂習作演練時間減少, 同學課外需要花更多時間實作, 預習及複習, 才可能學好. 如果有幾週沒能好好聽課及實作複習, 很容易跟不上.

原則上助教群每週會出一不計分題目供同學練習, 助教群在下一週講解, 並釐清更正同學解答之錯誤.

上課後, 修課或旁聽同學自行完成教科書中每章後之練習以加深學習效果, 可參考教材中對應的解答. 有關問題亦可請教助教.

助教群除每週五最後一節課(17:30~18:20), 在任課教師指導下, 協助學生實作當天授課內容相關課題, 並幫忙同學解決各種問題外, 助教群也將在臉書開設社團, 同學們學習的過程遇到的困難、或學習心得,都可以課外在社團發表, 並與助教們討論.

近年本課程網址:
https://ceiba.ntu.edu.tw/1051EE3029_
https://ceiba.ntu.edu.tw/1042EE4052_
https://ceiba.ntu.edu.tw/1032EE4052_
https://ceiba.ntu.edu.tw/1022EE4052_
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2012Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2011Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2010Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2009Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2008Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2007Spring.htm  

課程目標
訓練學生能夠利用C#語言寫作計算機程式, 並從中培養解決問題之規畫, 邏輯與偵錯能力, 及過程與結果呈現之表達能力. 願意組隊完成期末專題程式開發之同學, 另可獲得軟體系統發展分工整合及團隊合作經驗. 
課程要求
1. 先修課程:無

2. 學期成績計算方式:

三次作業 30% + 期中考 20% + 期末考 20% + 期末專題程式成果之臉書社團網站展演短片 15% + 期末專題程式書面報告 15%

助教群可依同學與助教之互動表現(課內外討論, 每週所出不計分之練習題解完題數及解答品質等)酌加總分最多1.5分.
學期成績小數點以下無條件進位之後, 依學校規定方式由百分制轉為等第.

3. 作業
各次作業繳交日前,每位修課同學需自行依興趣選擇一個主題,撰寫程式及報告當成計分之作業,內容亦可配合期末專題,作為其先期嘗試或構成其一部份. 交來之作業須以書面, 介紹選擇題目之動機,構想解說,程式測試規畫, 流程圖(第4章介紹), 結構圖(第6, 7章介紹)或UML圖(第9章介紹), 程式列表, 程式測試執行結果,參考文獻等.

此外並需於規定時間內分別上傳口頭報告投影片及心得報告. 每次作業之書面報告(pdf檔), 心得報告(pdf檔), 口頭簡報投影片(ppt檔或pdf檔), 在ceiba作業區分開繳交.

同學若自修或向學長或助教學得超過課程進度之內容,並應用於自行實作完成之作業, 需敘明自修或討論學習過程於學習心得部份. 作業亦可利用其他既有之相關開放使用程式碼或無版權之軟體工具及網路上可公用之數據, 影音, 圖片等資料, 直接或修改後採用, 以完成同學構想之主題, 但需註明出處及修改應用之處, 且如此產生之程式碼部份在程式列表中應予省略.

作業每次每人繳交一份, 不可多人合交. 如為多人合作, 亦須分開撰寫不同內容.

4. 期末專題程式:
課程進行中, 修課同學(不包含旁聽學生)自組1至3人之團隊, 於規定日期由CEIBA上傳一頁之期末專題程式構想(不計分), 說明預定主題與選擇此一主題之動機, 及可能之實作方法. 團隊應盡早開始持續合作, 完成期末專題程式實作.每一團隊需以學術論文格式寫成一份書面報告, 比照正式學術報告格式撰寫, 包含摘要(Abstract), 本文(至少須涵括研究動機, 相關之課程章節, 文獻回顧, 理論說明, 實作流程架構, 研究過程, 實作結果與討論, 結論, 並適當註明引用文獻及他人指導內容), 參考文獻(References)等內容. 並需於規定期限內上傳成果解說展演視訊短片至YouTube網站, 供同學互相評分. 期末專題展演的同儕互評, 全部透過網路進行. 課程並沒有安排一個大家聚在一起簡報打分數的時間. 所以七月初不在台北的同學, 期末專題的互評成績不受影響.

期末專題之書面報告(pdf檔), 心得報告(pdf檔), 及視訊短片臉書社團網址(pdf檔)也請於CEIBA網站作業區內分別上傳繳交.


專題程式實作可與學長或助教討論, 但必須由團隊本身完成.

亦可利用其他既有之相關開放使用程式碼或無版權之軟體工具及網路上可公用之數據, 影音, 圖片等資料,直接或修改後採用, 以完成團隊構想之主題, 但需於書面報告及投影片註明何處由何人協助完成,及修改或直接應用既有資源之部分與其出處.

團隊之期末專題解說展演視訊短片及書面報告成績均即為各團隊成員之期末專題程式展演與書面報告成績.

5. 評分為A+的作業及期末專題書面報告, 將會公布於CEIBA網站, 供所有同學參考.

 
預期每週課後學習時數
 
Office Hours
另約時間 備註: Scheduled by email  
指定閱讀
1. 鄭士康, 以C#學習程式設計基礎:使用Visual Studio 2012 Express for Windows Desktop, 2013. (電子書, 與各章例題,練習題解答,及期中期末複習解答等構成完整講義, 共同壓縮成一個zip檔, Tutorial2016, NTU Space網址https://www.space.ntu.edu.tw/navigate/s/FBACCD53E0CE444CA0F803B0CC8F3E0AQQY ), 請同學自行下載.
有需要於上課及期中期末Open Book考試時參考紙本者, 加退選後及期中考後, 分上冊(即1~7章, 290頁), 與下冊( 8~13章, 478頁), 參加助教群揪團, 以印量取得較多折扣. 上述教科書雖是介紹Visual Studio 2012 Express for Windows Desk Top, 但除若干細節外, 內容仍可應用於本課程採用之Visual Studio 2017.

2. 各章教學資料分基本教材(講義內容投影片, 上課時盡量依進度仔細講解), 補充教材(主要由同學課外學習, 上課時可能略作提示), 延伸學習教材(課外自修)三部分, 整合為一個XMind心智圖.xmind檔. 可於上課前由任課教師email通知之NTU Space網址下載. 同學請至http://actsmind.com/blog/software/xmind3download 下載安裝免費軟體XMind, 可開啟.xmind檔. 直接滑鼠雙按圖中的各種檔案圖標, 即可開啟各種教材檔案.  
參考書目
網路上適合各種程度之各種學習資源及市售C#入門及其他相關書籍均可參考. 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
三次作業 
30% 
作業每次由助教群輪一位助教批改, 任課教師抽驗. 每次作業佔學期成績10%. 評分要點為主題之創新性, 構想及動機之說明及相關圖形是否清楚,程式測試規畫是否完整. 使用外部資源之外, 個人獨力完成的程式部份是否切題有創意, 註解是否清楚適當,程式是否簡潔易讀, 學習心得是否言之有物等. 作業以 A+ = 97, A = 92, A- = 87, B+ = 82, B = 77, B- = 72等評分, 缺交為0分,遲交依規定扣分. 作業及學習心得須轉成pdf檔.另準備由同樣內容整理,含標題頁之7張左右投影片ppt或pdf檔, 於作業繳交日上課前由CEIBA系統作業區分別上傳繳交. 作業繳交日第三節,輪流抽籤決定同學以其準備之投影片進行簡報.亦歡迎旁聽同學繳交書面及投影片作業,並參加抽籤簡報. 作業討論抽到的修課同學若未事先請假, 又不在教室內, 作業成績先九五折, 隨後由抽到之時間至該同學出現或下課, 每十分鐘將該份作業成績乘以0.95一次. 作業遲交時,成績先打九折,隨後自預定繳交日第一節開始上課時間算起,每逾一日(24小時),該次作業成績乘以0.85一次. 若因另有要事無法出席作業討論者, 仍須於作業討論日上課第一節前上傳作業檔案. 並須與授課老師商量, 於適當時間進行作業簡報. 上傳的作業應包含 (1) 書面報告pdf檔, (2) 口頭簡報PowerPoint檔, (3)學習心得報告pdf檔, 分開於CEIBA作業區上傳. 
2. 
期中考 
20% 
4月27日原上課時間在原教室舉行,時間為下午2:20至6:00,範圍為第一章至前一週進度. 考試為Open Book, 同學可攜帶任何紙本資料, 但不可攜帶使用各式電腦(Computer)或計算器(Calculator), 亦不能借閱他人所攜資料. 考試進行中禁止使用手機. 因不可抗力之原因無法應考者, 請盡早於考試前通知任課老師商討變通方 法. 考試舉行過後, 方告知缺考原因者, 除確屬不可抗力原因並附證明者 可與任課老師商量變通方法外, 考試成績以零分計算. 考試由任課教師命題, 與助教群共同監考, 各助教依任課教師提供之參考解答, 亂數決定批改之題號(例如助教A改第3題, 助教B改第1, 2題, …).  
3. 
期末考 
20% 
6月29日原上課日在原教室舉行,時間為下午2:20至6:00,範圍為期中考 所考範圍之後的部分. 考試為Open Book, 同學可攜帶任何紙本資料, 但不可攜帶使用各式電腦(Computer)或計算器(Calculator), 亦不能借閱他人所攜資料. 考試進行中禁止使用手機. 因不可抗力之原因無法應考者, 請盡早於考試前通知任課老師商討變通方法. 考試舉行過後, 方告知缺考原因者, 除確屬不可抗力之原因無法應考並附證明者可與任課老師商量變通方法外, 考試成績以零分計算. 考試由任課教師命題, 與助教群共同監考, 各助教依任課教師提供之參考解答, 亂數決定批改之題號(例如助教A改第3題, 助教B改第1, 2題, …) 
4. 
期末專題實作展演視訊短片 
15% 
各團隊應完成期末專題實作, 並製作5分鐘左右解說展演視訊短片, 於7月1日0時至7月6日14時之間上傳至YouTube網站. 並在CEIBA網站作業區上傳YouTube網址(pdf檔). YouTube上的視訊短片, 供同學互相評分. 展演視訊短片的同儕互評, 全部透過網路進行. 課程並沒有安排一個大家聚在一起簡報打分數的時間. 所以七月初不在台北的同學, 期末專題的互評成績不受影響. 每位修課同學則於7月1日0時至7月7日14時上網為其他團隊短片, 以1至5分評分,並註 記優缺點.自己團隊之作品則應予迴避不評分. 所評分數1至5分各分數所 占人數應照屆時宣佈之規定比例分配, 不可全部打相同或均打少數特定分 數. 各團隊之展演成績為其他同學評分截頭去尾後平均(x),換算得分為 70+5x, 未如期推出短片之團隊除有特殊原因外, 以0分計算. 若確因不可抗力原因致無法完成短片之團隊, 須附證明, 並於7月5日當晚12:00前以email通知任課老師, 安排適當時間向任課老師簡報, 並由任課教師評分. 如仍無法簡報者, 由團隊與任課老師商討變通方法. 
5. 
期末專題實作書面報告 
15% 
7月7日下午2:00前, 將書面報告及學習心得分別轉成pdf檔, 由CEIBA系統作業區分開繳交. 書面報告由任課老師主觀依照書面報告之整體表現, 以 A+ = 97, A = 92, A- = 87, B+ = 82, B = 77, B- = 72 等評分, 缺交為0分. 不論原因, 遲交者成績打八折,於7月9日14:00後不再收補交之報告,該項成績為零分.  
6. 
助教評分 
1.5% 
依照平常與助教互動情況給分 
 
課程進度
週次
日期
單元主題
第1週
3/02  第1,2章: 課程背景及學習指引, 整合發展環境初步與簡易C#程式  
第2週
3/09  第3章: 實值變數與運算式 
第3週
3/16  第3,4章: 實值變數與運算式, 流程控制 
第4週
3/23  第4章: 流程控制, 第5章:陣列  
第5週
3/30  第5章:陣列, 第6章:函式  
第6週
3/31  補4/6調整放假課, 第6章:函式, 
第7週
4/13  第7章: 程式規劃與函式導向程式設計
繳交並討論第一次作業  
第8週
4/20  第7, 8章: 程式規劃與函式導向程式設計, 物件與類別 
第9週
4/27  期中考, 範圍至前一週進度 
第10週
5/04  第8章: 物件與類別 , 開始繳交分組名單及期末專題構想書 
第11週
5/11  第9章: 物件導向程式設計, 
第12週
5/18  第10章 至 10.5: 繼承與多型 , 繳交及討論第二次作業  
第13週
5/25  第12章: 基礎視窗程式設計, named pipes  
第14週
6/01  Unity遊戲程式設計 
第15週
6/08  第10章 10.5節之後: 繼承與多型 
第16週
6/15  第11章: 檔案讀寫與例外處理, 繳交並討論第三次作業  
第17週
6/22  第13章: Collections 與應用  
第18週
6/29  期末考 
第19週
7/1~7/7  7/1~7/6期間, 期末專題實作成果解說展演視訊短片上傳, 由同儕依據各組短片評分; 過程在線上完成. 七月初不在台灣的同學,同儕互評成績不受影響.
書面報告及學習心得於7月7日下午2:00前繳交, 任課教師評分.